06 随机近似与随机梯度下降
平均数计算
简单地计算Σi=1Nxi/N可以得到精确的平均数;但是这种方式只有样本全部到达才能进行。可以采用迭代式的方式计算平均数。
wk−1=k−11Σi=1k−1xiwk=wk−1−k1(wk−1−xk)
事实上,这种算法就是一种随机近似算法,同时也是随机梯度下降算法。
随机近似与Robbins-Monro 算法
随机近似(SA)指一系列随机迭代式算法,用于解方程或者优化问题。这种算法不需要知道实际的方程表达式。
RM算法是一种迭代式算法,用于解决g(w)=0问题。这种算法通过数据求得最优解w∗。
wk+1=wk−akg(wk,ηk)
上式中,wk为第k次迭代得到的结果,g(wk,ηk)是输入wk后得到的带有噪声ηk的观测值(直接输入可能得到的不是完美观测值),ak是一个正系数(可理解为步长)。
RM算法需要三个条件(证明略):
- 对于所有w,0<c1≤∇wg(w)≤c2,函数单调递增
- Σi=1Nak=∞,Σi=1Nak2<∞
- E[ηk∣Hk]=0,E[ηk2∣Hk]<∞
SGD
SGD是一种特殊的RM算法。它解决的问题是minJ(w)=E[f(w,X)],其中X是随机变量,w是待优化参数,E是相对于X的期望。
GD(梯度下降)算法为
wk+1=wk−αk∇wE[f(wk,X)]=wk−αkE[∇wf(wk,X)]
这里需要求梯度的期望。如果没有模型,可以通过数据的方式来求,也就是BGD(批量梯度下降)。
E[∇wf(wk,X)]≈n1Σi=1n∇wf(wk,xi)
对于这种方案,每次更新都需要进行一次估计,也就是说每次更新都需要多次采样。将其进一步简化,就得到了SGD(随机梯度下降)。
wk+1=wk−αk∇wf(wk,xk)
SGD将X的期望改为了X的一个采样xk。
可以通过证明SGD是一种特殊RM算法来证明它的有效性(指最终可以收敛到w∗)。
由于SGD有一定随机性,所以不会向梯队下降那样每次都走向最优的方向;但是可以证明,在w距w∗比较远时,SGD的误差较小,更类似GD。
在另一种情况中,可能要解决这样一个问题:
minJ(w)=n1Σi=1nf(w,xi)
此时没有随机变量,但是有一组{xi,f(xi)}。这种情况下,可以假设存在一个随机变量X,它取每个xi的概率是1/n;这种情况下,就将原问题转换为了SDG问题。这种情况下,可以随机取f(xi)代替Σi=1nf(w,xi)/n,通过模拟随机变量的行为解决问题。
MBGD
MBGD是介于BGD和SGD之间的算法。BGD每次要计算所有样本的均值,SGD只使用一个样本的值;而MBGD会随机选取一定量的样本求均值,用来替代期望。
相比SGD,MBGD可以更准确;相比BGD,MBGD更灵活和高效。注意,即使MBGD选取的样本量和总样本量相等,MBGD也不等于BGD,因为MBGD通过随机抽样的方式获取样本,一个样本可能被多次使用。
显然,BGD具有最快的收敛速度(不考虑均值计算),MBGD 次之,SGD最慢。